#include <iostream>
using namespace std;

class A
{
public:
    //构造
    A(int a = 0)
    :_a1(a)
    {
        cout<<"A(int a = 0)"<<endl;
    }
    //拷贝构造
    A(const A& aa)
    :_a1(aa._a1)
    {
        cout<<"A(const A& aa)"<<endl;
    }
    //赋值运算符重载
    A& operator=(const A& aa)
    {
        cout<<"A& operator=(const A& aa)"<<endl;
        if(this != &aa)
        {
            _a1 = aa._a1;
        }
        return *this;
    }
    //析构
    ~A()
    {
        cout<<"~A()"<<endl;
    }

private:
    int _a1 = 1;
};

void f1(A aa)
{}

int main()
{
    //有名对象来调用函数
    A aa1(1);
    f1(aa1);

    //隐式类型转换
    // f1(1);
    // //匿名对象
    // f1(A(1));
    // return 0;
}
// int main()
// {
//     //隐式类型转换 ： 构造 +拷贝狗杂
//     A aa1 = 1;
//     return 0;
// }
